In computer network implementations, I/O resources such as Ethernet and storage controllers have traditionally been incorporated into servers, with each server having its own set of I/O resources. However, since high-performance I/O resources can often be more expensive than the servers themselves, it is advantageous for a number of servers to share one or more I/O resources that are external to the servers. Moreover, such configurations can be more robust, since the relevant I/O resources can still be used if one or more of the servers malfunctions.
I/O virtualisation is a methodology which transforms accesses between standard I/O devices and standard servers such that the I/O devices can be shared across multiple servers in a way which hides the sharing from both the servers and the I/O devices.
I/O virtualisation has a number of benefits. While each virtual system requires its own dedicated I/O resources, in many physical configurations the number of I/O devices available on a client or servers may be insufficient or not of the correct type to provide each application with the required I/O connectivity and bandwidth.
Moreover, the use of a centrally managed I/O resource improves the scalability of I/O while simplifying the management of the networks and systems. Both blade and rack-mount servers can access the resources they need, when they need them. Furthermore, because I/O can be managed from a centralised switch, administrators can allocate resources more easily and efficiently.
The centralised approach to I/O virtualisation also offers network administrators a new opportunity to maximise network I/O load balancing and bandwidth management. If a server needs additional bandwidth, for example, network managers can allocate more I/O capacity. In addition, if a server has more I/O resources than necessary, they can be reallocated to other more needy servers.
I/O virtualisation promises to pay dividends in higher system reliability. By eliminating excessive redundancy in peripherals and ports across the network infrastructure and reducing the number of components in the network, failure rates will be minimised.
Because network administrators can better match I/O resources to performance needs and thereby use fewer cards, cables and ports, I/O virtualisation also promises to dramatically reduce system costs.
Typical I/O device virtualisation solutions today are as follows:
1. Virtual devices emulation in server virtualisation software such as VMware, Xen and Microsoft Virtual Server. This allows multiple Virtual Machines on a single physical server to share a single physical I/O device. There is no capability to share I/O resources across multiple physical servers.2. High level I/O virtualisation combined with I/O network such as Ethernet or Infiniband. This enables multiple servers to share access to an abstracted I/O service delivered by a specialised I/O gateway appliance.3. Low level PCI-based I/O virtualisation as defined by the PCI-SIG IOV standards. This defines an extension to the ubiquitous PCI protocols to allow commodity I/O devices to be shared by multiple servers.4. Low level PCI-based I/O virtualisation of legacy I/O devices by addition of an in-band virtualisation device which adds PCI IOV-like features to existing devices. This is exemplified by the NextIO non-commercial technology demonstrator seen in 2005.
High level solutions (1 and 2 above) provide some of the management benefits of I/O virtualisation, but at great cost and frequently with severe performance penalties. This is due to the fact that the I/O traffic has to undergo several layers of translation/encapsulation and that the hardware I/O devices are emulated in software. For low performance I/O this can be an acceptable solution, but in high I/O performance systems these solution become impractical.
The PCI-SIG IOV solution (3 above) resolves these cost/performance issues by enabling the native I/O interface to become a true multi-host network and by modifying the I/O devices to allow them to support multiple servers. There is no emulation and no translation of protocols. A practical problem exists, however, in that the existing PCI infrastructure is not fully forward compatible. Various new I/O and switch devices must be designed, implemented and brought to market specifically to solve this problem, and given the complex interdependencies, it is not clear how the technology can be introduced.
NextIO produced a PCI IOV demonstrator in 2005 (4 above) which used existing I/O devices by implementing an IOV switch (much as per the PCI-SIG standard) and by adding to each device an in-band virtualisation front end device. This was not however a commercially viable solution since the front end device was very expensive compared to the commodity I/O devices.
Accordingly, it would be desirable to add virtualisation to existing I/O devices, for example (but not exclusively) PCI I/O devices, and yet avoid the problems outlined above in relation to the existing solutions.